package com.yunkeji.system.domain.bo;

import com.yunkeji.common.core.domain.BaseEntity;
import com.yunkeji.common.core.validate.AddGroup;
import com.yunkeji.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 用户基本信息-扩展(存放一些不重要但是必要的信息)业务对象 ykj_app_user
 *
 * @author zhang
 * @date 2024-07-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AppUserBo extends BaseEntity {

    /** 自增主键 */
    @NotNull(
            message = "自增主键不能为空",
            groups = {EditGroup.class})
    private Long id;

    /** 爱洞ID */
    @NotNull(
            message = "爱洞ID不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long platformId;

    /** 手机号 */
    @NotBlank(
            message = "手机号不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String phone;

    /** 用户昵称 */
    @NotBlank(
            message = "用户昵称不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String nickName;

    /** 0 = 未提交 1=待审核 2=审核通过 3=审核拒绝 */
    @NotNull(
            message = "0 = 未提交 1=待审核 2=审核通过 3=审核拒绝 不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer cardAuth;

    /** 0 = 未提交 1=待审核 2=审核通过 3=审核拒绝 */
    @NotNull(
            message = "0 = 未提交 1=待审核 2=审核通过 3=审核拒绝 不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer videoAuth;

    /** 视频价格 */
    @NotNull(
            message = "视频价格不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private BigDecimal videoPrice;

    /** 语音价格 */
    @NotNull(
            message = "语音价格不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private BigDecimal voicePrice;

    /** 最后登录IP */
    @NotBlank(
            message = "最后登录IP不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String loginIp;

    /** 最后登录时间 */
    @NotNull(
            message = "最后登录时间不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date loginDate;

    /** 状态(0正常 1 封号 2删除 其他参考字典) */
    @NotNull(
            message = "状态(0正常 1 封号 2删除 其他参考字典)不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer status;

    /** 用户在线状态 0 离线 1 忙碌 2空闲 */
    @NotNull(
            message = "用户在线状态 0 离线 1 忙碌  2空闲不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer onlineStatus;

    /** 邀请人ID */
    @NotNull(
            message = "邀请人ID不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long pid;

    /** vip功能-可以不在同城和视频匹配出现(仅男号) */
    @NotNull(
            message = "vip功能-可以不在同城和视频匹配出现(仅男号)不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer hideInfo;

    /** 接通成功次数 */
    @NotNull(
            message = "接通成功次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer callSuccess;

    /** 接通失败次数 */
    @NotNull(
            message = "接通失败次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer callFail;

    /** 等级 */
    @NotNull(
            message = "等级不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer level;

    /** 账号类型 参考字典 */
    @NotNull(
            message = "账号类型 参考字典不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer accountType;

    /** 账号删除日期 账户状态为永久删除这个记录才有效,有可能再次激活 */
    @NotNull(
            message = "账号删除日期 账户状态为永久删除这个记录才有效,有可能再次激活不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date accountDelDate;

    /** 最近接入时间 */
    @NotNull(
            message = "最近接入时间不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long recentlyAccessTime;

    /** 是否勿扰 */
    @NotNull(
            message = "是否勿扰不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer disturbFlag;

    /** 封号截至日期，只有账号状态为封号才生效 */
    @NotNull(
            message = "封号截至日期，只有账号状态为封号才生效不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date limitDate;

    /** 性别(未知 2) */
    @NotNull(
            message = "性别(未知 2)不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer sex;

    /** 渠道 */
    @NotNull(
        message = "渠道",
        groups = {AddGroup.class, EditGroup.class})
    private Integer branch;
}
